package 抽象类;
/*
    1.抽象类和抽象方法，必须用”abstract“关键字修饰
    2.抽象方法不能通过本类对象来实例化
        （1）什么是实例化?
           答：类通过创建对象，来完成初始化操作
        （2）那抽象类怎么实例化
           答：抽象类通过创建其子类对象来完成初始化操作,即多态
    3.抽象类子类特点：
        （1）如果是普通类：则必须重写所有的抽象方法，重写的方法不再带有”abstract“关键字;
        （2）如果是抽象类：则不用重写抽象方法
    4.抽象类成员特点：
        （1）可以有普通成员变量，也可以有成员常量。
        （2）可以有抽象方法，也可以有非抽象方法
        （3）有构造方法，并且构造方法还可以重载
    5.抽象方法只能定义在抽象类中
    6.普通类中不可以有抽象方法，但可以有抽象子类
 综上所述：抽象类的成员只比普通类多一种：抽象方法，其他与普通方法一样
 */
public class Test {//定义一个测试类
    public static void main(String[] args) {
        Animal an=new Dog();
        an.eat();
        an.sleep();
        System.out.println("------------------------");
        //Animal an_1=new Cat();//抽象类不能被实例化，即不能用来创建对象,否则会报错
        //Animal an_2=new Animal();//抽象类不能被实例化，即不能用来创建对象,否则会报错
    }
}
